Skip to content

OpenManus:开源通用 AI Agent 框架

仓库: https://github.com/FoundationAgents/OpenManus | 许可证: MIT | 语言: Python 3.12+

OpenManus Logo

本章概览

  • OpenManus 是什么:无需邀请码的开源 AI Agent 框架
  • 项目背景:为什么需要 OpenManus
  • 核心特性:多工具协作、浏览器自动化、MCP 支持
  • 技术栈:Python + Pydantic + OpenAI API + Playwright
  • 适用场景:自动化任务、数据分析、Web 交互

1. 项目背景

1.1 什么是 AI Agent?

通俗比喻:想象你有一个超级智能的私人助理,它不仅能理解你的需求,还能主动使用各种工具来完成任务——上网搜索、编写代码、操作浏览器、处理文件。这就是 AI Agent。

传统 AI 助手:你问 → 它答 → 结束
AI Agent:你提需求 → 它思考 → 选择工具 → 执行操作 → 观察结果 → 继续迭代 → 完成任务

AI Agent 是一种能够自主完成复杂任务的智能系统,它具备以下特点:

  1. 自主性:能够独立做出决策,不需要人工干预每一步
  2. 工具使用:可以调用各种外部工具(搜索、代码执行、浏览器等)
  3. 迭代推理:通过 "思考-行动-观察" 循环不断优化结果
  4. 记忆能力:保持上下文,记住之前的对话和操作

1.2 Manus 与 OpenManus

2025 年初,一款名为 Manus 的 AI Agent 产品引起了广泛关注。它展示了令人惊叹的自动化能力——可以自主浏览网页、编写代码、处理数据。然而,Manus 需要邀请码才能使用,这限制了普通开发者的体验。

OpenManus 应运而生。它由 MetaGPT 团队的核心成员在短短 3 小时内开发出原型,旨在提供一个开源、免费、无需邀请码的替代方案。

Manus(闭源)          OpenManus(开源)
    │                      │
    ├── 需要邀请码          ├── 无需邀请码
    ├── 商业产品            ├── MIT 开源许可
    ├── 功能封闭            ├── 可自由定制扩展
    └── 依赖官方服务         └── 本地部署,数据自主

1.3 为什么选择 OpenManus?

特性传统 LLM APIOpenManus
任务执行只能回答问题能主动执行任务
工具调用需要手动集成内置多种工具
浏览器操作不支持原生支持
多步骤任务需要用户协调自动分解执行
扩展性受限于 API支持 MCP 协议扩展

2. 核心特性

2.1 多工具协作系统

OpenManus 内置了丰富的工具集,Agent 可以根据任务需求自动选择合适的工具:

python
# OpenManus 内置工具一览
available_tools = [
    PythonExecute(),      # 执行 Python 代码
    BrowserUseTool(),     # 浏览器自动化操作
    StrReplaceEditor(),   # 文件编辑器
    WebSearch(),          # 网络搜索
    AskHuman(),           # 询问用户
    Terminate(),          # 终止任务
]

工具协作示例:假设用户要求 "帮我查找最新的 Python 版本并创建一个测试脚本":

mermaid
graph LR
    A[用户请求] --> B[WebSearch: 搜索 Python 版本]
    B --> C[BrowserUseTool: 访问官网确认]
    C --> D[PythonExecute: 测试代码]
    D --> E[StrReplaceEditor: 保存脚本]
    E --> F[返回结果]

2.2 浏览器自动化

基于 browser-use 库,OpenManus 能够像人一样操作浏览器:

  • 导航到指定 URL
  • 点击按钮和链接
  • 填写表单
  • 滚动页面
  • 提取网页内容
  • 管理多个标签页
python
# 浏览器操作示例
actions = [
    "go_to_url",           # 访问 URL
    "click_element",       # 点击元素
    "input_text",          # 输入文本
    "scroll_down",         # 向下滚动
    "extract_content",     # 提取内容
    "web_search",          # 网页搜索
]

2.3 MCP 协议支持

Model Context Protocol (MCP) 是一种让 AI Agent 连接外部服务的标准协议。OpenManus 支持通过 MCP 扩展功能:

┌─────────────────────────────────────────────┐
│              OpenManus Agent                 │
├─────────────────────────────────────────────┤
│  内置工具                 MCP 工具          │
│  ├── PythonExecute       ├── 数据库连接      │
│  ├── BrowserUseTool      ├── 文件系统        │
│  ├── WebSearch           ├── 第三方 API      │
│  └── ...                 └── 自定义服务      │
└─────────────────────────────────────────────┘

2.4 Planning Flow(规划流程)

对于复杂任务,OpenManus 提供了规划执行模式:

  1. 创建计划:将大任务分解为可执行的步骤
  2. 逐步执行:按顺序或并行执行各个步骤
  3. 状态跟踪:实时监控每个步骤的完成状态
  4. 智能调度:根据步骤类型选择合适的执行器
python
# 计划步骤状态
class PlanStepStatus(Enum):
    NOT_STARTED = "not_started"  # [ ] 未开始
    IN_PROGRESS = "in_progress"  # [→] 进行中
    COMPLETED = "completed"      # [✓] 已完成
    BLOCKED = "blocked"          # [!] 被阻塞

3. 技术栈概览

3.1 核心依赖

组件用途说明
Python 3.12+运行环境使用最新语法特性
Pydantic数据验证类型安全的配置管理
OpenAI APILLM 调用支持 GPT-4o 等模型
Playwright浏览器自动化跨平台浏览器控制
browser-use浏览器工具高级浏览器操作封装
MCP SDK协议支持连接外部 MCP 服务
tiktokenToken 计数精确计算 token 用量

3.2 项目结构

OpenManus/
├── app/                      # 核心应用代码
│   ├── agent/               # Agent 实现
│   │   ├── base.py         # 基础 Agent 抽象类
│   │   ├── react.py        # ReAct 模式 Agent
│   │   ├── toolcall.py     # 工具调用 Agent
│   │   └── manus.py        # 主 Agent 实现
│   ├── tool/                # 工具集
│   │   ├── base.py         # 工具基类
│   │   ├── browser_use_tool.py
│   │   ├── python_execute.py
│   │   └── ...
│   ├── flow/                # 执行流程
│   │   ├── base.py         # 流程基类
│   │   └── planning.py     # 规划执行流程
│   ├── prompt/              # 提示词模板
│   ├── llm.py              # LLM 封装
│   ├── schema.py           # 数据模型定义
│   └── config.py           # 配置管理
├── config/                   # 配置文件
│   ├── config.example.toml  # 配置示例
│   └── mcp.json            # MCP 服务配置
├── main.py                  # 主入口
├── run_flow.py              # 规划模式入口
└── run_mcp.py               # MCP 模式入口

4. 适用场景

4.1 自动化研究任务

用户:"帮我调研 2024 年最热门的 AI Agent 框架"

OpenManus 执行流程:
1. WebSearch: 搜索 "AI Agent frameworks 2024"
2. BrowserUseTool: 访问多个技术博客和 GitHub
3. 提取并整理信息
4. 生成对比报告

4.2 数据分析与可视化

用户:"分析这个 CSV 文件并生成图表"

OpenManus 执行流程:
1. StrReplaceEditor: 读取 CSV 文件
2. PythonExecute: 使用 pandas 分析数据
3. PythonExecute: 使用 matplotlib 生成图表
4. 返回分析结论和图表

4.3 Web 表单自动化

用户:"帮我在这个网站上填写注册表单"

OpenManus 执行流程:
1. BrowserUseTool: 导航到注册页面
2. BrowserUseTool: 逐个填写表单字段
3. BrowserUseTool: 点击提交按钮
4. 确认注册成功

4.4 代码生成与调试

用户:"写一个爬虫程序抓取新闻标题"

OpenManus 执行流程:
1. 分析需求,设计代码结构
2. PythonExecute: 编写爬虫代码
3. 测试运行,调试错误
4. StrReplaceEditor: 保存最终代码

5. 阅读指南

本教程将带你深入理解 OpenManus 的设计与实现:

章节内容你将学到
22.2 架构设计整体架构与模块划分Agent 分层设计理念
22.3 核心概念Agent、Tool、Memory关键抽象的设计原理
22.4 实现细节源码解析如何实现工具调用和状态管理
22.5 使用指南安装配置与使用快速上手实践
22.6 总结展望优劣势分析与未来方向深入思考与扩展建议

6. 快速体验

6.1 环境准备

bash
# 克隆仓库
git clone https://github.com/FoundationAgents/OpenManus.git
cd OpenManus

# 创建虚拟环境(推荐使用 uv)
uv venv --python 3.12
source .venv/bin/activate

# 安装依赖
uv pip install -r requirements.txt

# 可选:安装浏览器驱动
playwright install

6.2 配置 API Key

bash
# 复制配置模板
cp config/config.example.toml config/config.toml

# 编辑配置文件,填入你的 API Key
toml
# config/config.toml
[llm]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..."  # 替换为你的 API Key
max_tokens = 4096
temperature = 0.0

6.3 运行你的第一个 Agent

bash
# 启动 OpenManus
python main.py

# 输入你的任务
Enter your prompt: 帮我搜索今天的科技新闻

下一章:22.2 架构设计 - 深入理解 OpenManus 的分层架构设计

基于 MIT 许可证发布。内容版权归作者所有。